package com.zues.thread.create.pool;

import com.zues.thread.util.ThreadUtil;
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

/**
 * 测试带有任务调度的线程池
 *
 * @ClassName TestTimer
 * @Description TODO
 * @Author zeus
 * @Date 3/24/2025 10:37 AM
 * @Version 1.0
 **/
@Slf4j(topic = "c.TestTimer")
public class TestTimer {


    public static void main(String[] args) {
        //使用线程池每隔一秒执行一次
        ScheduledExecutorService pool = Executors.newScheduledThreadPool(2);
        log.debug("start...");
        pool.scheduleAtFixedRate(()->{
            log.debug("running...");
        },1,1,TimeUnit.SECONDS);



    }

    /**
     * ScheduledExecutorService使用
     *
     */
    private static void method1() {
        // 创建一个大小为1的定时任务线程池
        ScheduledExecutorService pool = Executors.newScheduledThreadPool(1);

        // 调度一个任务，在1秒后执行
        pool.schedule(() -> {
            // 记录调试信息
            log.debug("task1");
            // 模拟任务执行，休眠2秒（此处被注释掉）
//            ThreadUtil.sleep(2);
            // 故意制造一个除零异常
            int a = 1 / 0;
        }, 1, TimeUnit.SECONDS);

        // 调度另一个任务，在1秒后执行
        pool.schedule(() -> {
            // 记录调试信息
            log.debug("task2");
        }, 1, TimeUnit.SECONDS);

        // 关闭线程池
        pool.shutdown();
    }


}
